<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>删除数组中的重复项</title>
    <script>
      // 数组去重 ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'] 要求去除数组中重复的元素。
      // 1.目标： 把旧数组里面不重复的元素选取出来放到新数组中， 重复的元素只保留一个， 放到新数组中去重。
      // 2.核心算法： 我们遍历旧数组， 然后拿着旧数组元素去查询新数组， 如果该元素在新数组里面没有出现过， 我们就添加， 否则不添加。
      // 3.我们怎么知道该元素没有存在？ 利用 新数组.indexOf(数组元素) 如果返回时 - 1 就说明 新数组里面没有改元素
      // 封装一个 去重的函数 unique 独一无二的
      // function unique(arr) {
      //   var newArr = [];
      //   for (var i = 0; i < arr.length; i++) {
      //     if (newArr.indexOf(arr[i]) === -1) {
      //       newArr.push(arr[i]);
      //     }
      //   }
      //   arr.splice(0); //通过splice()函数将arr数组清空[]
      //   for (var i = 0; i < newArr.length; i++) {
      //     arr[i] = newArr[i];
      //   }
      //   return arr.length;
      // }
      // var demo = unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'])
      //var demo = unique(['blue', 'green', 'blue'])
      // var arr = [1, 2, 1, 3, 4, 5, 2, 6];
      // var demo = unique(arr);
      // console.log(demo);
      // console.log(arr);
      //------------------------------------------------------------------------------
      // 给你一个有序数组 nums ，请你 原地 删除重复出现的元素，使每个元素 只出现一次 ，返回删除后数组的新长度。
      //不要使用额外的数组空间，你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。
      function removeDuplicates(n) {
        var i = 0;
        var nLength = n.length;
        while (i < nLength) {
          if (n[i] == n[i + 1]) {
            n.splice(i + 1, 1);
            nLength--;
          } else {
            i++;
          }
        }
        console.log(n);
        return n.length;
      }
      var n = [1, 1, 1, 2, 3, 4];
      var a = removeDuplicates(n);
      console.log(a);
      console.log(n);
    </script>
  </head>

  <body></body>
</html>
